﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using DevExpress.XtraRichEdit;
using System.Reflection;

namespace QL_Truong_Hoc.Export
{
    class clsExportPhieuVaoLop
    {
        //Data table đầu vào cần có những trường sau:
        //HoTen
        //NgaySinh
        //SoCMND
        //QueQuan
        //DonVi
        //TenNghe
        //PhieuHocNghe
        //TheHocNghe
        //QDXuaNgu
        //PhieuQuanNhan
        //GiayCMND
        //BangVanHoa
        //GiayKhaiSinh
        //Anh
        //Den
        //Gap
        //DaCapVPP
        //NgayHnay
        //ThangHnay
        //NamHnay

        private string mcstrTemplate = Environment.CurrentDirectory + @"\Templates\Mau 04_Phieu vao lop.doc";


        /// <summary>
        /// Thực hiện xuất ra file word.
        /// File template là file đã định sẵn.
        /// </summary>
        /// <param name="objData">Dữ liệu đưa vào file word</param>
        public bool fncExport(DataTable objData)
        {
            bool blnResult = false;

            try
            {
                //get data

                //export to file

                return true;
            }
            catch (Exception ex) { clsCommon.fncMsgError(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name, System.Reflection.MethodBase.GetCurrentMethod().ToString(), ex.Message); }
            finally { }
            return blnResult;
        }


        /// <summary>
        /// Thực hiện merge
        /// </summary>
        /// <param name="objWordControl">Control word</param>
        /// <param name="objData">Dữ liệu đầu vào</param>
        /// <param name="blnShowMergedData">Có hiện dữ liệu đã xuất ngay trên control không?</param>
        /// <returns></returns>
        public bool fncExport(RichEditControl objWordControl, DataTable objData)
        {
            bool blnResult = false;

            try
            {
                //get data
                xExport(objWordControl, objData);

                return true;
            }
            catch (Exception ex) { clsCommon.fncMsgError(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name, System.Reflection.MethodBase.GetCurrentMethod().ToString(), ex.Message); }
            finally { }
            return blnResult;
        }
        
        /// <summary>
        /// Thực hiện merge
        /// </summary>
        /// <param name="objWordControl">Control word</param>
        /// <param name="objData">Dữ liệu đầu vào</param>
        /// <param name="blnShowMergedData">Có hiện dữ liệu đã xuất ngay trên control không?</param>
        /// <returns></returns>
        private bool xExport(RichEditControl objWordControl, DataTable objData)
        {
            bool blnResult = false;
            try
            {
                //get data
                RichEditDocumentServer objWord = new RichEditDocumentServer();
                objWord.LoadDocument(mcstrTemplate);

                objWord.Options.MailMerge.DataSource = objData;
                objWord.Options.MailMerge.ViewMergedData = true;
                objWord.MailMerge(objWordControl.Document);

                return true;
            }
            catch (Exception ex) { clsCommon.fncMsgError(MethodBase.GetCurrentMethod().ReflectedType.Name, MethodBase.GetCurrentMethod().Name, ex.Message); }
            return blnResult;
        }
    }
}
